package com.cougil.uoc.seghismed.business.impl;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.apache.log4j.Logger;
import org.springframework.transaction.annotation.Transactional;

import com.cougil.uoc.seghismed.business.CipherService;
import com.cougil.uoc.seghismed.business.CoreServerService;
import com.cougil.uoc.seghismed.model.Usuari;
import com.cougil.uoc.seghismed.utils.SeghismedUtils;

/**
 * Classe principal que conté les propietats i métodes principals que s'empraran entre els diversos
 * serveis de negoci cridats a través dels serveis Web oferts a l'aplicació
 * 
 * @author Ignacio Cougil Jares
 */

@Transactional
public abstract class CoreServerServiceImpl implements CoreServerService {

	protected static final Logger logger = Logger.getLogger(CoreServerServiceImpl.class);
	protected CipherService cipherService;

	@PersistenceContext
	protected EntityManager em;

	private Usuari gestor = null;

	public EntityManager getEntityManager() {
		return this.em;
	}

	protected Usuari getGestor() {
		if (this.gestor == null) {
			this.gestor = SeghismedUtils.getUsuariGestor(this.cipherService);
		}
		return this.gestor;
	}

	/**
	 * @param Estableix cipherService com a valor de la propietat cipherService
	 */
	public void setCipherService(CipherService cipherService) {
		this.cipherService = cipherService;
	}

	public void setEntityManager(EntityManager em) {
		this.em = em;
	}



}
